ROS下实时标定android手机相机摄像头内参

您所在的位置:网站首页 android ros ROS下实时标定android手机相机摄像头内参

ROS下实时标定android手机相机摄像头内参

2024-06-09 13:47| 来源: 网络整理| 查看: 265

    本人小白,最近在做的项目需要用到同时集成IMU和摄像头的相机,但是目前东西还没到手,因为安卓手机同时具备单目相机和IMU,所以先用安卓手机试一下内参标定的流程。目前已经完成了手机上IMU和单目相机的标定。这里先讲一下如何实时标定手机相机摄像头内参。(默认标定分辨率是640x480)

环境:ubuntu16.04-kinetic

要求:ros-kinetic基本框架

第一步,提供ROS接口给你的安卓手机

这里需要通过一个开源软件Android_Camera-IMU给手机提供ROS接口GitHub - hitcm/Android_Camera-IMU: Wifi data aquistion between Android and ROS

    下载的压缩包里面有一个apk文件,这是Android的应用安装包文件,传给手机安装的时候会可能会提示高版本Android系统不兼容,但本人实际使用过程还是很稳定的。(目前会出现自动拉伸填满屏幕和手机切屏再回来会黑屏...)

    打开Camera-IMU,界面很简洁,只有一行域名,http://localhost:11311,此处只有localhost需要替换成接入的ip地址。回到ubuntu,随意打开终端,首先查询当前网络ip地址,然后打开ROS

ifconfig

    找到第一片字块的第二行的inet后面的ip地址,记录下来在手机上替换掉localhost,回到ubuntu打开ROS接口

roscore

    然后点击connect,如果连接不成功,查看一下手机接入网络的ip,应当和你替换的ip前缀一样。连接成功后,camera-imu会占用手机摄像头,表现出来的效果类似于被拉伸的相机界面的低分辨率版。

    连接成功以后检查一下手机是不是成功接入ROS

#查看ros目前话题列表

rostopic list

    应当多出/android/imu、/android/image_raw/compressed和/android/camera_info三个话题,检查数据是否成功传输。

#查询话题传输数据

rostopic echo &话题名

#查询话题传输效率 rostopic hz &话题名

    根据需要可以改变传输图像流的属性(compressed——>raw)

rosrun image_transport republish compressed in:=/android/image_raw raw out:=/camera/image_raw

    再次查看rostopic list,出现新话题/camera/image_raw,但是传输效率相比原话题有所降低。

第二步,配置标定

    连接部分完成了,接下来就是完成标定了,在第一步的基础上进行接下来的步骤

rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.026 image:=/camera/image_raw camera:=/camera --no-service-check

--size 8x6:表示标定板除去最外围一圈,长边有8个角点,宽有6个角点。

--square 0.026:表示每个标定小色块的边长,单位为mm,此处0.026表示边长为26mm。

image:图像流话题:此处以/camera/image_raw作为标定源。

camera:相机名:此处以/camera作为相机名。

--no-service-check:由于通过局域网传输,没有物理接口,如果这里以找不到相机信息报错,加上这一段跳过service-check。

第三步,标定

    Camera-IMU默认会把相机分辨率限制在640x480,因此获得的标定内参也是这样的情况下得到。标定流程和正常使用cameracalibrator.py是一样的,尽量使得x,y,size,skew四项指标都变成绿色再进行calibrate。此处就不加赘述。



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3